/**
 * 公共服务
 */
(function (window) {
    //域名
    var domain = 'http://192.168.1.248:8762';
    //请求地址
    var api = {};
    //服务
    var service = {};

    //登录
    api.login = domain + '/member/api/auth/login';
    //注册
    api.register = domain + '/member/api/account/register';
    //发送短信验证码
    api.sendCode = domain + '/member/api/common/code/send';
    //图片验证码
    api.imageCode = domain + '/member/api/common/image/code/get';

    /**
     * ajax请求统一封装
     * @param url 请求地址 必填
     * @param params 请求参数 必填 如果没有参数则填null
     * @param callback 回掉函数
     * @param type 请求类型 post get 默认：get
     */
    function autumnAjax(url, params, callback, type) {
        type = type || 'get';
        $.ajax({
            url: url,
            data: JSON.stringify(params),
            dataType: 'json',
            type: type,
            contentType: 'application/json; charset=utf-8',
            complete: function (xhr, ts) {
                loading.hide();
            },
            beforeSend: function (xhr) {
                loading.show('请稍后....');
            },
            success: function (res) {
                callback && callback(res);
            }
        });
    }

    /**
     * post 请求
     * @param url 请求地址
     * @param params 参数
     * @param callback 回调
     */
    function ajacPost(url, params, callback) {
        autumnAjax(url, params, callback, 'post');
    }

    /**
     * get 请求
     * @param url 请求地址
     * @param params 参数
     * @param callback 回调
     */
    function ajaxGet(url, params, callback) {
        autumnAjax(url, params, callback, 'get');
    }

    /**
     * 获取图形验证码
     * @param callback
     */
    service.getImageCode = function (callback) {
        ajaxGet(api.imageCode, null, function (res) {
            if (res.success) {
                callback && callback(res.result);
            } else {
                alert(res.error ? res.error.message : '网络异常');
            }
        })
    };

    /**
     * 登录
     */
    service.login = function (loginInfo, callback, error) {
        ajacPost(api.login, loginInfo, function (res) {
            if (res.success) {
                callback && callback(res.result);
            } else {
                if (res.error) {
                    error && error(res.error);
                }
            }
        });
    };
    //暴露外部接口
    window.autumn = {
        ajaxGet: ajaxGet,
        ajaxPost: ajacPost,
        loading: loading,
        service: service
    }
})(window);